/**
 *  @FileName: FinalizationaDemo.java
 *  @Last Modified Date: CharlW
 *  @Description: Java允许定义这样的方法，它在对象被垃圾收集器析构(回收)之前调用，
 *  这个方法叫做finalize( )，它用来清除回收对象。
 */

public class FinalizationaDemo {
	public static void main(String[] args) {
		Cake c1 = new Cake(1);
		Cake c2 = new Cake(2);
		Cake c3 = new Cake(3);
		
		c2 = c3 = null;
		System.gc(); // 调用Java垃圾收集器
	}
}

class Cake extends Object {
	private int id;
	public Cake(int id) {
		this.id = id;
		System.out.println("Cake Object " + id + "is created");
	}
	
	protected void finalize() throws java.lang.Throwable {
		super.finalize();
		System.out.println("Cake Object " + id + "is disposed");
	}
}